package src;

import pjwstk.jps.ast.*;
import pjwstk.jps.ast.binary.*;
import pjwstk.jps.ast.terminal.*;
import pjwstk.jps.ast.unary.*;

/**
 * @author s9111_s10304
 *
 */
public class Main
{
    @SuppressWarnings("unused")
    public static void main(String[] args) {
        // pr1 - AST

        // osoba where (count(imie) > 1)
        Expression expression1 = new Expression(
            new WhereExpression(
                new NameTerminal("osoba"),
                new GreaterThanExpression(
                    new CountExpression(
                        new NameTerminal("imie")
                    ),
                    new IntegerTerminal(1)
                )
            ));

        // firma where (lokalizacja in (bag(„Warszawa”, „Łódź”)))
        Expression expression2 = new Expression(
            new WhereExpression(
                new NameTerminal("firma"),
                new InExpression(
                    new NameTerminal("lokalizacja"),
                    new BagExpression(
                        new CommaExpression(
                            new StringTerminal("Warszawa"),
                            new StringTerminal("Łódź")
                        )
                    )
                )
            ));

        // bag(1,2) in bag(1,2,3)
        Expression expression3 = new Expression(
            new InExpression(
                new BagExpression(
                    new CommaExpression(
                        new IntegerTerminal(1),
                        new IntegerTerminal(2)
                    )
                ),
                new BagExpression(
                    new CommaExpression(
                        new CommaExpression(
                            new IntegerTerminal(1),
                            new IntegerTerminal(2)
                        ),
                        new IntegerTerminal(3)
                    )
                )
            ));

        // (firma where nazwa=”XYZ”).(zatrudnia where nazwisko=”Kowalski”)
        Expression expression4 = new Expression(
            new DotExpression(
                new WhereExpression(
                    new NameTerminal("firma"),
                    new EqualsExpression(
                        new NameTerminal("nazwa"),
                        new StringTerminal("XYZ")
                    )
                ),
                new WhereExpression(
                    new NameTerminal("zatrudnia"),
                    new EqualsExpression(
                        new NameTerminal("nazwisko"),
                        new StringTerminal("Kowalski")
                    )
                )
            ));
    }
}